The present invention relates to software and hardware testing environments, and more particularly to software and hardware testing tools for debugging systems that include one or more processing units or microprocessors.
As advances are made in the technology for manufacturing integrated circuits, the capability and complexity of hardware and software for embedded systems increases. This continual increase in capability and complexity brings a continuing challenge for the software development tools used to create and debug applications for embedded hardware.
Embedded systems developers are facing a problem of xe2x80x9cvanishing visibilityxe2x80x9d. It is increasingly harder to see in real time what""s happening within an application, due to higher processor speeds, higher integration levels, and larger on-chip caches. xe2x80x9cSystem-on-a-chipxe2x80x9d solutions are incorporating more and more ASIC peripherals. Capabilities that used to be off-chip, and easily accessible for monitoring with logic analyzers, are now on-chip. The more traditional solutions of using logic analyzers and in-circuit emulators are quickly becoming insufficient to support the debugging needs of today""s developers.
In recent years, a partial solution to this problem has been introduced. JTAG emulation has replaced in-circuit emulation. A JTAG test port is integrated into the microprocessor permitting data to be moved on- and off-chip without interrupting the executing device. And, in some microprocessors, this capability is augmented with additional emulation logic to provide even greater visibility and access into registers and other internal functions such as on-chip cache memories.
Some software tools have been created to aid the developer in using this enhanced debugging capability but they have tended to be rather primitive. These tools are usually designed to work with only one hardware design and must be partially to completely rewritten each time a new design is introduced. Given the pace of technology change, modifying software debug tools or creating new ones for each new hardware innovation in embedded systems is prohibitively expensive. As such, these system have a hardware centric view.
In addition, these software tools tend to be limited in their capabilities and in their ease-of-use. They have generally been created by hardware designers who think in terms of registers, comparators, addresses, etc. instead of in terms of the tasks or jobs the developer wishes to accomplish. In other words, the tools are hardware-centric rather than user-centric. The software developer has to be familiar with how the hardware works to accomplish even simple tasks such as setting a breakpoint.
Finally, the xe2x80x9csystem-on-a-chipxe2x80x9d solutions are introducing a new problem for the developers and users of the software debug tools targets for these solutions. Hardware designs are no longer limited to a few, set configurations. Hardware designers can vary the capabilities of their xe2x80x9csystem-on-a-chipxe2x80x9d to meet the needs of the target application. Therefore, to avoid requiring the software developers to learn a new hardware architecture and a new set of debug tools each time, the debug tools need to adapt themselves to the capabilities of the hardware.
An illustrative embodiment of the present invention seeks to provide a software system and method for configuring a software system for interaction with a hardware system. In this method, the software system is executed on a host processor interconnected with the hardware system. A database is accessed to obtain a description of a set of functional components present within the hardware system. A software representation of the capabilities of each functional component is created by using the description of the set of functional components. Then, the software representation is interrogated to determine a set of operational capabilities of the hardware system. The software system is then operated in a manner that is responsive to the set of operation capabilities of the hardware system.
In one embodiment of the invention, the software system is a software development system connected to a test bed for debugging an application program being executed on a target hardware system. The database and the software representation correspond to a set of debug components provided on the target hardware system.
These and other features of the invention that will be apparent to those skilled in the art from the following detailed description of the invention, taken together with the accompanying drawings.